package top.ddltech.algorithm;

import top.ddltech.algorithm.sort.*;
import top.ddltech.algorithm.util.SortUtil;

public class Sort {

    /**
     * 测试选择排序
     */
    public static void testSelectionSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        SelectionSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        SelectionSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试插入排序
     */
    public static void testInsertionSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        InsertionSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        InsertionSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试希尔排序
     */
    public static void testShellSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        ShellSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        ShellSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试归并排序
     */
    public static void testMergeSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        MergeSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        MergeSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试快速排序
     */
    public static void testQuickSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        QuickSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        QuickSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试堆排序
     */
    public static void testHeapSort() {
        String[] a = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"};
        HeapSort.sort(a);
        SortUtil.show(a);

        String[] b = {"bed", "bug", "dad", "yes", "zoo", "all", "bad", "yet"};
        HeapSort.sort(b);
        SortUtil.show(b);
    }

    /**
     * 测试排序比较
     */
    public static void testSortCompare() {
        // 插入排序与选择排序对比
//        SortCompare.compare("Insertion", "Selection", 1000, 100);

        // 希尔排序与插入排序对比
//        SortCompare.compare("Shell", "Insertion", 100000, 100);

        // 归并排序与希尔排序对比
//        SortCompare.compare("Merge", "Shell", 100000, 100);

        // 快速排序与希尔排序对比
        SortCompare.compare("Quick", "Shell", 100000, 100);

        // 快速排序与归并排序对比
        SortCompare.compare("Quick", "Merge", 100000, 100);

        // 快速排序与堆排序对比
        SortCompare.compare("Quick", "Heap", 100000, 100);
    }
}
